﻿using System;
using System.Collections.Generic;
using Mvc3App.Dominio;

namespace Mvc3App.Repositorio
{
    public interface IRepository<T> where T : BaseEntity
    {
        T GetOne(object id);
        long Count();
        void Add(T entity);
        void Add(IEnumerable<T> entities);
        void Update(T entity);
        void Delete(object id);
        void Delete(T entity);
        /// <summary>
        /// // Rotora una porcion de elementos desde una coleccion de acuerdo a una funcion de ordenacion.
        /// </summary>
        /// <param name="slice">Porcion actual</param>
        /// <param name="quantity">Elementos por porcion</param>
        /// <param name="order">Expresion de ordenacion</param>
        /// <param name="ascending">Orden</param>
        /// <returns></returns>
        IEnumerable<T> GetSlice(int slice, int quantity, string order, bool ascending);
    }
}